package com.red.star.wechat.data.entity;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author nofish.yan@gmail.com
 * @date 2018/7/12.
 * 客户信息实体类
 */
@Data
@Table(name = "t_customer_info")
public class CustomerInfo extends BaseEntity {

    /**
     * 姓名
     */
    private String name;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String county;

    /**
     * 商场
     */
    private String mall;

    /**
     * 参与活动时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date partTime;

    @Transient
    private String customerTime;
    /**
     * 券信息
     */
    private String ticketInfo;

    /**
     * 意向商场
     */
    private String intentMall;

    /**
     * 意向品牌
     */
    private String intentBrand;

    /**
     * 备注
     */
    private String remark;

    @Transient
    private Long time;

    /**
     * 沟通状态:
     * 1 意向强
     * 2 意向中
     * 3 意向弱
     * 4 无意向
     * 5 不在当地
     * 6 拒绝
     * 7 无效号码
     * 8 未开通语音服务
     * 9 稍后再联络
     * 10 无人接听
     */
    private String communicateStatus;

    /**
     * 推送状态 0 未操作 1未推送 2 已推送
     */
    private Integer pushStatus;

    /**
     * 渠道
     */
    private String channel;

    /**
     * 推送大区域
     */
    private String bigNoticeArea;

    /**
     * 推送小区域
     */
    private String smallNoticeArea;

    /**
     * 意向商场code
     */
    private String intentMallCode;

    /**
     * 意向品牌商户ID
     */
    private Integer intentMerchantId;

    /**
     * 推送类型 0 工厂 1 商场
     */
    private Integer pushType;

    /**
     * 推送商场
     */
    private String pushMallCode;

    /**
     * 推送商场名
     */
    private String pushMallName;

    /**
     * 推送商户
     */
    private Integer pushMerchantId;

    /**
     * 当前客户信息所属活动
     */
    private Integer activity;

    @Transient
    private String mallCode;

    @Transient
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date partStartTime;

    @Transient
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date partEndTime;

    /**
     * 状态 0 正常 1 删除
     */
    private Integer status;

    /**
     * 推送手机号
     */
    private String pushMobile;

    /**
     * 推送品牌
     */
    private String pushBrandName;

    /**
     * 所在活动
     */
    private String activityName;

    /**
     * 意向程度
     * 1:意向强
     * 2:意向中
     * 3:意向弱
     * 4:无意向
     * 5:待确定
     */
    @Transient
    private Integer intentLevel;

    @Transient
    private List<Object> intentLevelList;

    @Transient
    private List<Object> sysCallStatusList;

    /**
     * 拨打次数
     */
    @Transient
    private Integer num;

    /**
     * 拨打状态(是否有效)
     * 1:有效号码
     * 2:无效号码
     * 3:稍后联络
     * 4:拒绝
     * 5:关机
     * 6:无人接听
     */
    @Transient
    private Integer callStatus;

    @Transient
    private List<Object> callStatusList;

    /**
     * 系统反馈通话状态
     * 1:打通
     * 2:未打通
     */
    @Transient
    private Integer sysCallStatus;

    /**
     * 最终拨打状态
     */
    @Transient
    private Integer lastCallStatus;

    /**
     * 系统最终拨打状态
     */
    @Transient
    private Integer lastSysCallStatus;

    /**
     * 最终拨打时间
     */
    @Transient
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastCallTime;

    @Transient
    private String lastCallTimes;

    /**
     * 通话备注
     */
    @Transient
    private String callRemark;

    @Transient
    private List<Object> remarkList = new ArrayList<>();

    /**
     * 数据创建时间
     */
    @Transient
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dataCreateTime;

    @Transient
    private String dataCreateTimes;

    /**
     * 所在城市
     */
    @Transient
    private String liveCity;

    @Transient
    private List<CallRemark> callRemarkList = new ArrayList<>();

    @Transient
    private List<CallRecords> callRecordsList = new ArrayList<>();

    private Integer lastPushId;

    @Transient
    private String intentLevelS;

    @Transient
    private String callStatusS;

    @Transient
    private String remarkS;

    @Transient
    private String sysCallStatusS;
}
